 import javax.swing.DefaultListModel;
 
 /** 
 * Interfaccia di base per gli algoritmi basati sui grafi.
 * 
 * @author Massimiliano Ferretti matricola 79769 
 */
 
 public interface Algorithm
 {
 /**
  * Inizializza l'algoritmo impostando il grafo su cui lavorare e la lista di 
  * stringhe sul quale eseguire l'output.  
  * @param graph Grafo su cui eseguire i calcoli
  * @param output Oggetto DefaultListModel che rappresenta l'output 
  * dell'algoritmo    
  * @see Graph    
  */   
  public void initialize(Graph graph, DefaultListModel output);
  
  /**
   * Esegue l'algoritmo, modificando lo stato dei nodi del grafo da cui è
   * stato inizializzato.   
   * Se viene chiamato senza aver prima effettuato una chiamata 
   * al metodo initialize, viene eseguito su un grafo vuoto, quindi non 
   * ha alcun effetto.    
   * Come nodo di partenza viene considerato il nodo correntemente selezionato.                    
   */     
  public void execute();
  
  /**
   * Restituisce il nome dell'algoritmo.
   * @return Il nome dell'algoritmo.   
   */     
  public String getName();   
 }
